Nimajin Software Consulting - Projects 2006-2013 Rev. 1.0 13/05/24 The projects are listed in chronological order, most recently completed first. Each project description includes the start and end dates, the effort (in man-months) and the technologies used. 2013 Video Capture and 3D Presentation on SBC Jan 2013 - Apr 2013 (2.25 m/m) PandaBoard (OMAP 4460 ARM Cortex-A9), Ubuntu Linux, C++, GCC, OpenGL ES, XLib, LibAV, LibV4L2 Design & development of real-time video presentation prototype application. The object of the project was to simultaneously capture video from two webcams and present them as textures side-by-side on a deformable 3D mesh at the highest frame rate and size possible. The board uses the same CPU used in the Galaxy Nexus mobile phone. Performed research and experimentation with various operating system flavours and boot options. Ubuntu Linux environment was selected to support coding and compiling on the board itself. Partitioned boot flash disk and imaged boot and operating system. Coded initial 3D presentation using standard OpenGL, GLSL & GLUT. Found performance was bad because, in Ubuntu on PandaBoard, OpenGL is emulated in software. Ported to OpenGL ES without GLUT. Developed framework for windowing and user input via XLib. Developed camera interface classes from LibV4L2 documentation. The system was built using three threads (one for presentation and one for each camera capture and decoding) to take advantage of parallelism offered by multi-core CPU. Designed pipeline control logic to drop video frames from second camera if it wasn't keeping up with the first. Adapted JPEG decoding from TinyJPEG (debugged version from OPAL). Found this was a bit superior to LibAV code. Wrote YUYV video decoding in GLSL. This system can capture 176x144 MJPG from 2 cameras and present at 30 fps. Unfortunately a driver bug would not allow two cameras to open at any higher resolution. Tests showed the board can stream a single 720p MJPG camera at 30 fps. Client was able to continue development themselves. VoIP Test Tool Improvements Jan 2013 - Apr 2013 (0.85 m/m) Windows 8, VS 11.0, C++, WTL, OPAL, RTP Effected memory consumption repair after source code and performance analysis. Developed a custom 2-line list UI control for selection from options each represented by 2 lines of text. Implemented a custom text presentation window with toolbar for modification of font properties and line spacing. Merged new SVN code into production code. Carried out analysis of open source RFC 2833/4733 RTP code with respect to proper timing, including thread prioritization and operation of timers themselves and revised it to add controllability and to bring functionality to specification. Debugged multi-threaded deadlock problem using static code analysis and dynamic tracing and repaired defect by using message queues to decouple threads. Implemented internal signalling system to measure and display time periods between tool and network events. Used state machine to improve synchronization between VoIP call signalling and media stream startup. Electronic Assembly Jan 2013 (0.25 m/m) Hand tools, multimeter, soldering tools Built some A/D conditioning units for a major automotive parts manufacturer's test lab: assembled circuit boards, performed continuity and short circuit testing, designed circuit layout on breadboard from schematic, completed chassis machining, assembly & wiring. 2012 .Net VoIP Component Design & Development Aug 2012 - Dec 2012 (0.70 m/m) Windows 7, VS 10.0, C++, C#, OPAL, NSIS This simplified SIP client was designed for general use by .Net programs. It is licensed by Nimajin to a third party for peer-to-peer voice communications in an on-line game and is for sale at 'http://shop2.signalsoft.nl/product_info.php?cPath=31&products_id=353&language=en'. First, an abstract interface was designed to work as a plug-in for the host program and a stub component was developed for use by the third party so they could code and test their UI while the VoIP functionality was implemented. A test harness and client GUI was developed in C# separately for use by Nimajin. A new interop layer was designed and coded to adapt the open-source OPAL VoIP library's unmanaged C-language structures and functions to .Net. This defined the new API and event callbacks for the host program. The OPAL library linkage was modified into one DLL with the minimum symbol table necessary, to reduce download size. A new randomized STUN server selection was implemented for use behind NAT routers. A NullSoft installer was scripted using NSIS. Installation and usage instructions were contributed to the game wiki at 'http://railsignalling.org/signalwiki/index.php/Voice_Communications'. Program Updater Design & Development Aug 2012 - Dec 2012 (0.10 m/m) Windows 7, VS 10.0, C#, HTTP This .Net component provides services of checking versions of specific programs against on-line database and downloading new files from a Web server and replacing them. The implementation was adapted from open-source code. The code was slightly refactored for portability, an abstract interface was encoded so the component could be used as a plug-in and a DLL was built. An update control database was written and hosted on a Web server, along with the target program files. This system is in operation serving the commercially-available .Net VoIP Component. Speech to Lipsync Script File Converter Sept 2012 - Nov 2012 (0.20 m/m) Windows 7, VS 10.0, C++, WTL, Microsoft Speech API, Python Small GUI utility program analyses audio files and generates lipsync script files, suitable for 3D animation tools like Blender. SAPI usage was adapted from open-source code from Annosoft, which provided rudimentary Anno4 output. New functionality was added to scale frame timing information based on user selection and to output to Papagayo format. Experiments were performed to host Python script files for the purpose of enabling other forms of output. VoIP Call Talkoff Test May 2012 - Aug 2012 (0.10 m/m) Windows 7, VS 10.0, C++, WTL, SIP, OPAL This addition to an existing program was required to test SIP gateway detection of DTMF digit tones under noisy audio conditions. The implementation sent the DTMF tones to the audio card output from user-selectable file sets so various distortions could be tested. The audio card output was attached to the gateway input. Between the tones, user-selectable noise files were played. The gateway was expected to send SIP INVITE messages over its Ethernet interface in response to the DTMF tones. The OPAL SIP call handling in the program was used to detect the gateway signaling. The new code compared the incoming SIP messages to the sent DTMF tone values and tabulated the matches and unexpected digits. The audio sending, SIP signaling and digit comparison were implemented in worker threads, and visual feedback was provided by posting Windows messages to the UI thread. CIDCW-EIU Signaling May 2012 - Aug 2012 (0.70 m/m) Windows 7, VS 10.0, C++, WTL, WASAPI This was an addition to an existing program to set output bits and play an audio file in response to input bit signal. It required low (sub-millisecond) latency and precise synchronization between the I/O bit input and the output and audio file playing. DirectSound could not satisfy the timing requirements, so a WASAPI audio output object was implemented to drop in to the OPAL audio channel interface definition. Because the WASAPI audio was set for exclusive mode (to minimize latency), and in this mode it only accepts input at device-specific rates, audio sampling rate conversion was required to convert the source audio files to the device-natural rates. This was implemented by modifying and integrating some open-source FIR filter code. The file loading and conversion was implemented as a worker thread. The triggering, and bit and audio response were implemented as a state machine to synchronize under user-configurable timings. Audio File List Player May 2012 - Aug 2012 (0.20 m/m) Windows 7, VS 10.0, C++, WTL, DirectSound This addition to an existing program provides standard audio file play list capability with the addition of user-selectable period of silence before each file. Developed the UI for file selection and ordering. A worker thread was implemented for file playing. The thread posts Windows messages to the UI to update file progress and audio level indicators. Measured & analyzed DirectSound latency and revised I/O bit output timing code for synchronicity. Digital I/O Bit Controller & Monitor May 2012 - Aug 2012 (0.60 m/m) Windows 7, VS 10.0, C++, WTL This addition to an existing program was required to display the input and output states of digital I/O bits in real-time and to trigger software components when they change. Input bit monitoring was implemented using a worker thread to poll the I/O bit hardware driver. Developed a notification system to notify subscribers via event signal objects (for waiting worker thread targets) and Windows messages (for UI thread). 2011 DTMF Test Tools Design & Development Jul 2011 - Dec 2011 (1.00 m/m) Windows 7, VS 10.0, C++, WTL, OPAL, DirectSound Developed a pair of tools to test the DTMF response of VoIP gateways. The first tool plays a set of audio files containing speech, interspersed by audio files containing DTMF signals for timed periods at timed intervals, all UI-selectable. The second tool plays out various types of DTMF signals at timed intervals. In both cases, the sets of files are controlled by a script file. Audio and VoIP Test Tools Design & Development May 2011 - Sept 2011 (1.30 m/m) Windows 7, VS 10.0, C++, WTL, OPAL, SIP, RTP, DirectSound Developed C++ object API for Measurement Computing digital I/O devices, with debouncing and message-based notification. Analyzed performance (latency) of their digital I/O drivers. Analyzed performance (accuracy) difference between waitable and multimedia timers. Developed suite of VoIP call setup tests with UI configurable parameters, actions triggered by I/O signals or timers, and timing measurements. Developed suite of VoIP messaging tests: INFO and RFC 2833 with UI configurable parameters. Developed incoming and outgoing VoIP Caller ID tests. Tested using some Cisco VoIP gateways; set up dial plans. Developed audio I/O dropout detection system. Developed system to force thread execution on core other than main thread. Developed VoIP audio stream recording and system for mixing of audio file into output stream. Developed audio file playback and recording with control via timing or I/O triggers. Web Site Revision May 2011 - Jun 2011 (0.15 m/m) VS 10.0, HTML, CSS Re-architected informational web site for restaurant. Revised layout. Added new content and images. Converted files from PDF to HTML. .Net Chart And Chart List Controls Design Jan 2011 - May 2011 (1.10 m/m) Windows 7/Vista/XP, VS 9.0, C# (3.5), WPF Collaborated with client on definition of requirements. Delivered 40-page document listing and describing 22 classes and all of their properties and behaviours. The controls were designed to integrate with the Visual Studio designer, which allowed their properties to be set, other controls to be dropped into them and data objects to be added to their collections. A uniqued shared configuration system was developed, using WPF dependent properties, where many charts could be attached to a single container of settings and a change to one of the settings would change all attached charts. Setting an individual property of a chart automatically detached it from the shared settings. Dialog boxes for control of settings were designed. Also, standard systems for persistence of settings and data. Working prototypes were coded and tested. Audio Obfuscation Feature Development Apr 2011 (0.10 m/m) Windows 7/Vista/XP, VS 9.0, C++, OPAL, Audacity Developed a method for overlaying watermark on all audio played or captured by the client's demo system (to prevent use of demo for real testing). Modified audio from client's samples. Watermark audio stored within program to prevent tampering. Data Identification System Design & Development Dec 2010 - Feb 2011 (1.00 m/m) Windows 7/Vista/XP, VS 9.0, C++, COM, ATL, WTL Collaborated in architecture for data item identification system. Developed parser for item tags in data streams. Developed report generators for plain, tagged and CSV output of data accumulated from streams. Added COM interfaces to existing objects for clients to retrieve the reports. Revised existing data storage system to provide user selection of report type. Add selection persistence. VoIP RTP Streaming Analysis & Repair Dec 2010 - Jan 2011 (0.20 m/m) Windows 7, VS 9.0, C++, OPAL, SIP Investigated absence of audio in one direction and distortion in the other between client's OPAL softphone and their client's (OEM) proprietary softphone (interopability problem). Analysis of Wireshark traces, softphone logs, audio stream captures and source code. Define futher tests to do at OEM's site. Discovered and repaired problems in OPAL SIP signalling and G.722.1 codec framing code. 2010 SIP Packet Size Signalling Development Dec 2010 (0.10 m/m) Windows 7, VS 9.0, C++, OPAL, SIP, SDP Added capability for ptime value transmission in SIP call answer phase. SIPXecs Remote User Management and Presence Signalling System Development Jul 2010 - Nov 2010 (1.50 m/m) Windows 7, VS 9.0, C++, OPAL, SIP, SIMPLE, SOAP, XML, HTTP, SIPXecs Tested OPAL SOAP implementation against SIPx configuration server; analysed and repaired handling of HTTP packets with malformed chunk encoding, added capability to OPAL for authenticated SOAP access. Designed and coded C++ object API for remote control of all SIPXecs configuration parameters, including XML conversion. Developed new SIP client application for testing. Added to it capabilities for user registration and subscription to message waiting events from the server. Added capability for subscription and transmission of presence events (registration and dialog) of known users. Tested against remote SIPx server. Code also tested by client on iPhone. Acoustic Echo Canceller Testing and Adjustment Jul 2010 - Aug 2010 (0.25 m/m) Windows 7, VS 9.0, C++, OPAL, Microsoft DirectSound and multimedia audio Designed method and implemented program to test effectiveness of acoustic echo canceller software (Speex AEC). Measured effectiveness using various parameters and employing DirectSound and multimedia API's. Provided parameter recommendations. Developed new, more responsive DirectSound interface code for OPAL. Automatic Results File Storage System Design & Development Jun 2010 - Jul 2010 (0.50 m/m) Windows 7/Vista/XP, VS 9.0, C++, COM, ATL, WTL Revised the client's source code to automatically name and store files that previously had to be named and stored by operator action. Added a new configuration dialog, menu items and settings persistence. Added feature licensing mechanism. Placed file save triggering at correct points in the program's execution. H.323 Call Redirection Analysis May 2010 (0.125 m/m) Windows 7, VS 9.0, C++, OPAL, H.323, FreeSwitch From decode of Wireshark packets and open-source code analysis, designed a modification to extract the redirecting number from a message field and supply it to the call control engine. VoIP Stack Source Code Upgrade Integration Jul 2009 - Apr 2010 (2.75 m/m) Windows 7/Vista/XP, VS 9.0, C++, OPAL, SIP, H.323, RTP, COM, ATL, WTL Revised SIP and H.323 applications using OPAL 2.3 to OPAL 3.6 to improve specification conformance. Revised all statically linked codecs to plugins and implemented new plugins for 8 G.729 variants, G.722.1 and G.722.2 (AMR-WB). Cooperated with other open-source developers on implementation of SDP parameter encoding and decoding for selection of codec sub-variants and packet sizing. Added COM and registry commands for new configuration parameters. 2009 Script Interpreter Revision Dec 2009 (0.125 m/m) Windows 7/XP, VS 9.0, VS 6.0, C++ Modified client's source code, adding support for new features to configuration script executive and improving parser robustness. UI Behaviour Debugging and Improvements Nov 2009 (0.75 m/m) Windows 7/XP, VS 9.0, VS 6.0, C++, MFC, proprietary device Reproduced client's build and run-time environments, analysed UI behaviour and client's source code for cause of slowness and freezing problems. Replaced slow list UIs with higher performance versions. Replaced in-line code with messaging system and idle handler to solve freezing problems without resorting to multithreading. SIP Registration and Call Failure Analysis Oct 2009 - Nov 2009 (0.50 m/m) Windows Vista/XP, VS 9.0, C++, OPAL, SIP Investigated inability of client's OPAL softphone to connect call through remote proxy to proprietary softphone (interopability problem) by Wireshark and log analysis. Resolved by open- source call control code modification. RTP Audio Stream Synchronization System Design & Development Aug 2009 - Sept 2009 (0.75 m/m) Windows Vista/XP, VS 9.0, C++, OPAL, SIP, RTP/RTCP, wxWindows Developed an algorithm to synchronize multiple streams of audio coming in and going out RTP connections of previously developed multistream VoIP softphone. (Since the multiple streams all came from the same phone, they needed to be synchronized to eliminate echo effects) Implementation involved refactoring the audio mixer classes provided by OPAL so they could be adapted for use in the synchronized multistream architecture. Remote Control Over Network System Design & Development Jun 2009 - Jul 2009 (1.0 m/m) Windows Vista/XP, VS 9.0, C++, COM, ATL, WTL, TCP/IP, WinSock, C#, VB Developed a system to allow new programs to control an existing application by sending messages over network. Added TCP/IP server, toolbar control, and keyboard and mouse lockout mechanism to existing application. Implemented server as separate thread to run parallel and allow normal operation of existing application. Developed C# TCP/IP client assembly as API for client's customers to integrate into their new programs. Implemented as separate thread to run parallel, with event delegates to activate customer's software. Wrote programmer's reference describing API and demonstration program in VB. Video Rendering Algorithm Performance Analysis Jul 2009 (0.375 m/m) Windows Vista/XP, VS 9.0, C++, GDI, DirectX, OpenGL Developed several programs implementing various video stream rendering methods and measuring their frame rates to find the fastest method. Multistream Softphone Design & Development Apr 2009 - Aug 2009 (0.625 m/m) Windows Vista/XP, VS 9.0, C++, OPAL, SIP, wxWindows Developed a SIP softphone that automatically calls a configurable list of associated endpoints when placing an outgoing call, automatically answers calls from those associated endpoints and automatically releases all associated calls when the main call is hung up. The software distributes outgoing audio to all of the associated endpoints and mixes incoming audio from all streams. Developed an algorithm for associating the calls, a new window for configuring the call associations and code for storing and loading all this information when the program shuts down and restarts. Audio Stream Dropout Analysis Apr 2009 (0.125 m/m) Windows Vista/XP, VS 9.0, C++, OPAL, VoIP RTP, DirectSound Analyzed RTP jitter buffer and audio playback code and provided revision suggestions to reduce audio dropouts. Railroad Game Timetable Editor Design & Development Jan 2009 - Jun 2009 (3.0 m/m) Windows Vista, VS 9.0, C# (.NET 2.0, Windows Forms), SQL, Access, Excel, ReportViewer Developed an editor to handle train composition, timetable and movement orders for the SignalSoft Post-T series of railroad simulators: * Plug-in system to provide resources for several different simulator layouts. * Custom bar chart as presentation and input control, with handling for hover, click, drag, resize and scaling. This is used as an interactive track occupation chart for modification of when and upon which tracks trains will stop at stations. * Unique custom input and presentation control for arrangement of cars in train. * Custom drop-down list and hour-of-the-day controls for use in data grid. * Linkage logic and rdlc for presentation and printing of timetable using ReportViewer. All train, timetable and order data resides in an Access database, handled with OleDb and SQL. Resource data is input from Excel and CSV. Text and Image Storage System Design & Development Oct 2008 - Jan 2009 (1.75 m/m) Windows Vista, VS 9.0, C++, COM, ATL, WTL, Wise Installer Developed a COM component for automatic generation of line graph images with configurable sizes and appearances from system-generated data and for their permanent storage in selectable formats. Developed a COM component for retrieval and permanent storage of text data with automatic selection of input sources based on data generation options of system. Developed a wizard UI within a COM component for configuration and testing of storage and image format options with an automatic folder and file naming algorithm based on data being stored. Modified the controller of an existing data generation system to present UI controls for activating the new storage components. 2008 Software Licensing Addition Dec 2008 (0.125 m/m) Windows XP, VS 8.0, .NET 3.5, C#, WPF, XAML Added simple run count-based software license management with password protection and encrypted storage to paintball target shooting booth game previously developed by Nimajin. Data Stream Viewer Revisions Nov 2008 - Dec 2008 (0.125 m/m) Windows Vista, VS 9.0, C++, ATL, WTL, GDI Enhanced data visualization capability of WireShark- or DebugView-like tool previously developed by Nimajin. Improvement of DirectSound Audio Handling in OPAL Sep 2008 – Oct 2008 (0.5 m/m) Windows Vista, VS 9.0, C++, OPAL, SIP, H.323, wxWindows, DirectSound Revised OPAL open-source VoIP framework DirectSound audio play and record to simplify access and reduce transfer latency to 10 ms. VoIP Jitter Research Apr 2008 - Sep 2008 (0.875 m/m) Windows Vista, VS 9.0, C++, ATL, WTL, WinPCap, DirectSound Developed a tool to measure (with an accuracy of better than 4 ms) the processing time between the audio device and network interfaces of any VoIP softphone. Port of MonoSLAM Visual Object Tracking System Jul 2008 - Aug 2008 (0.5 m/m) Windows Vista, VS 9.0, C++, OpenGL, Oxford computer vision library, ATL, WTL, DirectShow Ported the open-source MonoSLAM visual object tracking system from Linux to Windows using WTL UI and DirectShow video capture. Programmable Report System Infrastructure Design Feb 2008 - Aug 2008 (1.0 m/m) Windows XP, VS 8.0, C++, COM, ATL, Word, Excel Analyzed existing system data output and designed retrofit COM components to convert and store data and images for use by programmable report generator application. Update of Audio Streaming Classes to Handle USB Device Removal and Arrival Apr 2008 (0.25 m/m) Windows Vista, VS 9.0, C++, ATL, Windows SDK & DDK, Bluetooth, Microsoft multimedia audio & DirectSound Added device removal and arrival message handling and state machine to automatically reconnect audio streams to transient USB devices. Update of Audio Streaming Classes for Vista Core Audio APIs Mar 2008 - Apr 2008 (0.25 m/m) Windows Vista, Windows Core Audio APIs, VS 9.0, C++, ATL, WTL, Windows SDK & DDK Revised the audio device enumeration system to use the new Microsoft Core Audio API's to find the required endpoints on Windows Vista. VoIP Test System Architecture Oct 2007 - Feb 2008 (0.5 m/m) VoIP, TCP/IP, DHCP, ARP, WinPCap, Word, Visio Designed a protocol-independent method for accessing VoIP media streams for testing purposes. API Documentation Jan 2008 (0.25 m/m) Technical writing (Word), Windows XP, VS 8.0, C++, COM Reviewed source code and created detailed programming-reference documentation for existing COM objects. 2007 XML Application Settings Storage Classes Design & Development Nov 2007 (0.5 m/m) Technical writing (HTML, XHTML), Windows XP, VS 8.0, C++, ATL, MSXML 4.0 Reviewed existing free XML application settings storage systems. Implemented ATL and MSXML-based classes and test framework. Added XML pretty formatting algorithm. Wrote code description and usage article. Expanded download web site to multiple pages. VoIP Signaling Customization for G.722 Oct 2007 (0.125 m/m) Windows XP, VS 8.0, C++, OPAL, SIP, SDP, ITU G.722 Modified the session description to signal and accept G.722 transfer rate as 16,000, rather than 8,000 as specified in RFC 3551. VoIP Softphone User Manual Writing Sept 2007 (0.5 m/m) Technical writing (Word) Created a how-to manual that describes principles of operation and set-up of a VoIP softphone. Integration of Audio Codecs into VoIP Software May 2007 - Sept 2007 (1.0 m/m) Windows XP, VS 8.0, C++, COM, ATL, OPAL, SIP, H.323, ITU G.729 (A, B, D, E, F, G, I) Added call signaling and codec support for all variants of G.729 (up to G) to Opal open-source SIP and H.323 VoIP system. Paintball Target Shooting Booth Game Revision & Additions Jul 2007 - Aug 2007 (0.75 m/m) Windows XP & Vista, VS 8.0, .NET 3.0, C#, DirectX, WPF, XAML, Cider Revised UI technology from DirectX to WPF, revised timing and scoring systems, added advertising display features, added audio and video file playing sequencer. VoIP Agent Software Research Jun 2007 (0.5 m/m) Internet, email, phone calls, Word Created detailed reports describing and comparing features and capabilities of selected VoIP softphones. VoIP G.722 Timestamping Repair Jun 2007 (0.125 m/m) Windows XP, VS 8.0, C++, OPAL, RTP, ITU G.722 Modified the G.722 RTP packet timestamping to mark at rate of 8,000 as specified in RFC 3551, rather than 16,000, which is the audio sampling rate. Development of Installer Integrating VAC Software Apr 2007 (0.125 m/m) Wise Installer, Virtual Audio Cable Analyzed registry modification by VAC during cable setup and duplicated in installer. Audio Recorder & Player Applications Design & Development Apr 2007 (0.25 m/m) Windows Mobile 5.0, Windows Compact Framework 2.0, VS 8.0, .NET 2.0, C# Designed and implemented user interface, file reading & saving, volume controls and audio streaming via existing Wireless Headset Interface assembly, for operation on PDA. Linux Audio Codec Driver Revisions Apr 2007 (0.25 m/m) ARM embedded uCLinux, C & C++ (GCC, make), SUSE Linux Added independent left and right volume control capability to proprietary Linux audio driver. Audio Streaming Component Additions and Improvements Mar 2007 (0.5 m/m) Windows XP, VS 8.0, C++, COM, ATL, Microsoft Wave Audio API, DirectSound Added performance improvements to existing audio streaming component, particularly, ability to replace media already queued to device. Resulted in audio latency reduction of 150 ms. Added multiple stream capability, with a configuration system to associate sets of audio devices to streams. Web Site Design & Development Feb 2007 (0.125 m/m) HTML, XHTML, VS 8.0 Designed and coded a simple business calling card web site. VoIP Traffic Analysis Jan 2007 (0.125 m/m) SER, Wireshark Analyzed VoIP traffic between phone and SER to resolve registration problems. SIP User Agent Registration Additions and Improvements Jan 2007 (0.375 m/m) Windows XP, VS 8.0, C++, OPAL, SIP, RFC 2617, SER, Wireshark Revised SIP component API to include configuration of signaling proxy, registrar, port, authentication domain and password. Tested with SIP Express Router. 2006 Wireshark Instruction Dec 2006 (0.125 m/m) Wireshark protocol analyzer (was Ethereal) Instructed staff on how to use Wireshark to capture and analyze VoIP network traffic. SIP Registrar Installation Nov 2006 (0.125 m/m) SER (SIP Express Router), PartySIP, Interaction SIP Proxy Installed and configured several SIP server software packages on site for testing purposes. Automated Test System Software Analysis and Design Nov 2006 (0.25 m/m) National Instruments LabVIEW and LabWindows/CVI, C, COM, MS Word, Visio Analyzed automated test system software developed by a customer of the client and designed a replacement based on COM components and LabVIEW. SIP Call failure Analysis Sept 2006 (0.125 m/m) Found reasons for call setup failure from trace log and suggested changes to make calls successful. Paintball Target Shooting Booth Game Debugging and Repairs Sept 2006 (0.125 m/m) Windows XP, VS 8.0, .NET 2.0, C#, DirectX Repaired software bugs causing unhandled exceptions and scoring errors. VoIP Codec Subtype Signaling Additions Jul 2006 (0.375 m/m) Windows XP, VS 8.0, C++, OPAL, SIP, SDP, H.323, G.722.1, Speex Revised FMTP parsing to enable negotiation of various supported bit rates. SIP G.722 Rate Acceptance Modification Jul 2006 (0.125 m/m) Windows XP, VS 8.0, C++, OPAL, SIP, SDP, G.722 Revised codec matching code to accept G.722 rate of 8000 or 16000 in SDP. SIP Audio Delay Analysis Jun 2006 (0.125 m/m) Windows XP, VS 8.0, C++, OPAL, SIP Tested software on site to determine reasons for audio streaming delay problems. Paintball Target Shooting Booth Game Design & Development May 2006 - Jun 2006 (0.75 m/m) Windows XP, VS 8.0, .NET 2.0, C#, DirectX In this game the software randomly lights up LED targets on an 8x12 foot panel and the player shoots the targets with their paintball gun. When the target is hit, the panel sends a message to the software, which updates the timing and score on the PC screen. Also on the PC screen, the software continuously plays videos for advertising and entertainment. This new application was collaboratively designed with the client. Nimajin developed the game controller software, including a protocol to exchange target lighting and hit detection messages with the target panel via serial port, the target lighting & scoring system, the video playlist and the user interface, which was recoded in DirectX when it was discovered that Windows Forms in .NET 2.0 could not display data panels translucently over video. Wireless Headset System Development Feb 2006 - Apr 2006 (1.25 m/m) PocketPC, C#, Windows Compact Framework, .NET 2.0, VS 8.0 ARM embedded æCLinux, C & C++, SUSE Linux, gcc The wireless headset is a set of headphones with a boom microphone, attached to a battery- powered embedded Linux computer with a Wi-Fi card. The system transfers three channels of 20,500 samples per second uncompressed audio over the Wi-Fi link between this and a PDA, where a client application can process the microphone input and send output to the headphones. From design done Jan 2006. * Developed embedded Linux device driver for custom audio hardware using C language and Linux server software for real-time audio transfer of audio over Wi-Fi in C++ (Both developed using cross platform tools on SUSE Linux). * Developed .NET assembly as API to transfer audio between client application and Wi-Fi. * Wrote client application programming manual. * Developed demonstration client PDA application in C#. Bluetooth Headset Control and Audio Transfer Component Revisions Feb 2006 (0.375 m/m) Windows XP, VS 8.0, COM, C++, ATL, WTL, DirectSound, WidComm Bluetooth library This Windows COM component automates control of Bluetooth headsets and transfers audio between a headset and the analysis software of the larger system. * Developed and tested the control capabilities. * Updated DirectSound audio streaming (see July 2005) to DirectX 9.0 * Revised the device connection procedures and status reporting user interface. * Wrote the API reference document. Wireless Headset System Design Jan 2006 (1.0 m/m) Windows XP, PocketPC, C#, Windows Compact Framework, .NET 2.0, ARM embedded æCLinux, C & C++, SUSE Linux In the request, the wireless headset is to be a set of headphones with a boom microphone, attached to a battery-powered embedded computer with a Wi-Fi card. The system is to transfer high-quality uncompressed audio over the Wi-Fi link between this and a PDA, where a client application can process the microphone input and send output to the headphones. * Architected real-time audio transfer software, design control & audio transfer protocols. * Developed tests to measure the transfer capacity of the devices and the Wi-Fi link.